Link Edits

ISVs are cautioned that products that compile and link edit themselves after installation may use system interfaces that are not defined by the ABI. Specifically, the headers and static libraries on the Reference Platform, not specified by the ABI, may not be compatible with those headers and libraries on all ABI vendors' platforms.

This problem occurs only when an ISV's application link edits after installation (i.e., uses the ld command to build itself). If all executables and shared libraries are built on the Reference Platform and pass the Application Compliance Testing tool (ACT), the only possible external interfaces are those specified by the ABI. (Note that ACT does not test manifest constants, such as ioctls compiled into the program.) The ABI interfaces are present on all ABI conforming Operating Systems in the form of dynamic shared libraries. Thus they will be resolved through dynamic linking to the dynamic shared libraries at run-time.

In the case where an application link edits itself after installation, it may expose a incompatibility between non-ABI headers or libraries on the Reference Platform and another vendor's platform. Furthermore, vendors may change the interface or implementation of libraries not covered by the ABI in new operating system releases.

The MIPS ABI Group offers the following guidelines to ISV's whose applications must link edit after installation; they are not meant to be either exhaustive or foolproof:

Object Files

All .o files shipped with an ISV product must use position independent code, as described in chapter 3 of the System V ABI, MIPS Processor Supplement.

Debugging

Only an ELF symbol table is needed for assembly level debugging with symbols.

Compiler and Linker Switches

The various platforms use different flags and switches for the compiler and linker. This is a reflection of the differences in the heritage of the compiler systems on the various machines. Vendors should support either the standard SVR4 SGS flags and switches or provide a wrapper function which translates these standard switches into the local equivalents. The wrappers abicc and abild have been developed to permit uniform compilation and loader flags. Vendors should provide these wrappers or equivalent functions. Some compilation systems may not support all the flags and switches that the SVR4 SGS does. Where possible the unsupported switches should be silently ignored by the wrapper or the base compilation system.

The abicc wrapper supports the following flags, which are described in the UNIX System V Release 4 Programmer's Reference Manual:

The abild wrapper supports the following flags, which are described in the UNIX System V Release 4 Programmer's Reference Manual:

Back to the Table of Contents
Back to the MIPS ABI Home Page


Maintained by webmaster@mipsabi.org
last modified on August 17, 1995

Copyright © 1995, MIPS ABI Group, Incorporated.